package com.yqb.study.common.multidatasource;

import com.yqb.study.constant.multidatasource.DataSourceEnum;

/**
 * 线程私有路由配置，用于DynamicDataSource动态读取配置的 datasource
 */
public class DataSourceContextHolder {

	// 为线程创建单独的目标数据库路由
	private static final ThreadLocal<String> dataSourceContextHolder = new ThreadLocal<String>();

	/**
	 * 设置数据源类型
	 *
	 * @param dataSourceType
	 *            数据库类型
	 */
	public static void setDataSourceType(String dataSourceType) {
		if (dataSourceType == null) {
			throw new NullPointerException();
		}
		dataSourceContextHolder.set(dataSourceType);
	}

	/**
	 * 获取数据源类型
	 */
	public static String getDataSourceType() {
		return dataSourceContextHolder.get() == null ? DataSourceEnum.MASTERDB.getNameEn() : dataSourceContextHolder.get();
	}

	/**
	 * 清除数据源类型
	 */
	public static void clearDataSourceType() {
		dataSourceContextHolder.remove();
	}
}
